import util from "@/assets/js/public";

/**
 * 附件AI解析
 */
// blocField：集团识别名称
// provinceField：省内识别名称【名称不同时用|分隔】
// isFeedback：是否把解析结果显示到业务表单中
// isUppercase：是否将省内金额数据转换成大写后进行比较
// className：省内非表单控件字段class名称，例：ctable中的合计
// blocId：集团字段  provinceId：省内字段   适用于ctable列数据的比较
// stage: 区分不同文件类型 prev代表前向合同, after代表后向合同
var fieldEqualData = {
    "ZhongBiaoJieXi": [//中标通知书解析（商机转项目）（已改造）
        {blocField: "法定代表人",provinceField: "负责人（法定代表人）"},
        {blocField: "采购人",provinceField: "集团客户名称"},
        {blocField: "项目名称",provinceField: "项目名称"},
        {blocField: "中标时间",provinceField: "中标日期"},
        {blocField: "中标金额",provinceField: "中标金额"},
        {blocField: "招标代理机构",provinceField: "招标代理机构"},
        {blocField: "中标单位名称",provinceField: "中标单位名称"},
        {blocField: "客户名称",provinceField: "集团客户名称"},
        {blocField: "通知下发时间",provinceField: "中标通知书下达（签发）日期",isFeedback: true}
    ],
    "JueCeJieXi": [//决策文件解析（标前决策(移动)）
        {blocField: "项目名称",provinceField: "立项项目名称"},
        {blocField: "公文号",provinceField: "地市会议纪要编号"},
        {blocField: "客户预算",provinceField: "商机预算(万元)"},
        {blocField: "不含税收入",provinceField: "不含税预估最低报价(万元)"},
        {blocField: "审批人",provinceField: "签发人(公文)"},
        {blocField: "含税总价",provinceField: "含税预估最低报价(万元)"},
        {blocField: "项目毛利率",provinceField: "项目毛利率(%)"},
        {blocField: "含税收入",provinceField: "含税预估最低报价(万元)"},
        {blocField: "审批意见",provinceField: "市公司决策结果",isFeedback: true},
        {blocField: "竞标方式",provinceField: "采购方式"},
        {blocField: "不含税总价",provinceField: "不含税预估最低报价(万元)"},
        {blocField: "决策时间",provinceField: "立项决策完成（通过）"},
    ],
    "HeTongJieXi": [//合同文件解析
        {blocField: "项目名称",provinceField: "项目名称"},
        {blocField: "乙方盖章",provinceField: "合同乙方"},
        {blocField: "甲方盖章",provinceField: "合同甲方"},
        {blocField: "签订日期",provinceField: "签章时间",path: "contractSignedDate"},
        {blocField: "合同乙方名称",provinceField: "合同乙方",path: "contractPartyB"},
        {blocField: "合同甲方名称",provinceField: "合同甲方",path: "contractPartyA"},
        {blocField: "合同总金额（小写）含税",provinceField: "合同总金额",path: "amountTax"},
        {blocField: "项目年限",provinceField: "项目年限(年)",path: "projectDuration"},
        {blocField: "合同金额（大写）不含税",provinceField: "合同总金额(不含税)",path: "contractAmountUppercase"},
        {blocField: "合同金额（小写）不含税",provinceField: "合同总金额(不含税)",path: "contractAmountLowercase"},
        {blocField: "乙方签字",provinceField: "负责人（法定代表人）"},
        {blocField: "甲方签字",provinceField: "负责人（法定代表人）"},
        {blocField: "合同总金额（大写）含税",provinceField: "合同总金额(含税)",path: "contractTaxAmountUppercase"},
        {blocField: "合同有效期",provinceField: "合同有效期(年)",path: "contractValidity"},
        {blocField: "合同交付日期",provinceField: "合同计划交付年月",className: "#deliveryDate_ai"},
    ],
    "KaiGongJieXi": [//项目开工文件解析
        {blocField: "项目名称",provinceField: "项目名称"},
        {blocField: "计划完工时间",provinceField: "计划完成时间"},
        {blocField: "承建单位",provinceField: "承建单位"},
        {blocField: "施工单位",provinceField: "施工单位"},
        {blocField: "会议时间",provinceField: "会议时间",isFeedback: true},
        {blocField: "盖章识别",provinceField: "集团客户名称"},
        {blocField: "监理单位",provinceField: "监理单位",isFeedback: true},
        {blocField: "客户单位",provinceField: "集团客户名称"},
        {blocField: "开工时间",provinceField: "实际开工时间",isFeedback: true},
    ],
    "JinDuJieXi": [//项目进度证明文件解析
        {blocField: "项目名称",provinceField: "项目名称"},
        {blocField: "进度证明落款日期",provinceField: "通过时间",isFeedback: true},
        {blocField: "客户签名",provinceField: "集团客户名称"},
        {blocField: "进度截止日期",provinceField: "计划完成时间"},
        {blocField: "客户盖章",provinceField: "集团客户名称"},
        {blocField: "签收日期",provinceField: "通过时间",isFeedback: true},
    ],
    "YanShouJieXi":[//项目验收文件解析
        {blocField: "项目名称",provinceField: "项目名称"},
        {blocField: "客户签名",provinceField: "客户联系人"},
        {blocField: "移动方签名",provinceField: "客户经理"},
        {blocField: "落款日期",provinceField: "验收时间",isFeedback: true},
        {blocField: "客户盖章",provinceField: "集团客户名称"},
        {blocField: "验收方签名",provinceField: "客户联系人"},
        {blocField: "客户名称",provinceField: "集团客户名称"},
        {blocField: "移动方盖章",provinceField: "乙方"},
        {blocField: "验收结论",provinceField: "验收结果",isFeedback: true},
        {blocField: "验收方盖章",provinceField: "集团客户名称"},
    ]
};
const aiUtils = {
    // 将AI解析的数据进行格式化
    valueFormatter(val){
        var data = val;
        var num_regx = /^[\-\+]?(([0-9]+)([\.,]([0-9]+))?|([\.,]([0-9]+))?)$/;//数字
        if(val=="undefined" || val=="null" || val==" "|| val==[]){
            data = "";
        }
        /**
         * 将解析的结果格式化
         */
        // 时间特殊处理
        if(typeof(val) == "string"){
            if(val.indexOf("年")>-1 && val.indexOf("月")>-1){
                var nData = "";
                nData = val.replace("年","-").replace("月","-").replace("日","");
                var nDataArry = nData.split("-");
                if(nDataArry[1].length < 2) nDataArry[1] = "0" + nDataArry[1];
                if(nDataArry[2] && nDataArry[2].length<2) nDataArry[2] = "0" + nDataArry[2];
                data = nDataArry.join("-");
            }
            // 比率
            if(val.indexOf("%") > -1){
                var aiNumStr = val.replace("%","");
                if(num_regx.test(aiNumStr)){
                    data = aiNumStr;
                }
            }
            // 年限
            if(val.indexOf("个月") > -1){
                var aiYearStr = val.replace("个月","");
                if(num_regx.test(aiYearStr)){
                    data = aiYearStr;
                }
            }
            // 金额
            if(val.indexOf("元")>-1 || val.indexOf("万元")>-1){
                var aiMoneyStr = val.replace("万元","").replace("元","");
                if(num_regx.test(aiMoneyStr)){
                    data = aiMoneyStr;
                }
            }
        }
        return data;
    },
    getEqualResult($id,data){
    var $body = $id.parents("body");
    var analysisCode = $id.attr("AIcode");

    var dictV = "";

    if(fieldEqualData[analysisCode]){
        for(var m in fieldEqualData[analysisCode]){
            if(data.fieldName == fieldEqualData[analysisCode][m].blocField){
                if(fieldEqualData[analysisCode][m].className){
                    // 将AI解析值回显到系统中
                    if(fieldEqualData[analysisCode][m].isFeedback && !dictV){
                        if($field.prop("tagName") == "INPUT"){
                            $field.val(data.aiValue);
                        }else{
                            $field.text(data.aiValue);
                        }
                        dictV = data.aiValue;
                    }

                }else if(fieldEqualData[analysisCode][m].provinceField.indexOf("|") > -1){
                    $body.find("td.label").each(function(x,y) {
                        var label = getEleLabel($(y));//获取字段中文名
                        var provinceFieldArry = fieldEqualData[analysisCode][m].provinceField.split("|");
                        for (var k in provinceFieldArry) {
                            if (provinceFieldArry[k] == label && !dictV) {
                                dictV = getEleValue($(y));//获取字段值
                                $(y).next("td").children().eq(0).attr("aiMark",data.dictField);//设置字段标识

                                // 将AI解析值回显到系统中
                                if(fieldEqualData[analysisCode][m].isFeedback && !dictV){
                                    setEleValue($(y).next("td").children().eq(0),data.aiValue);
                                    dictV = data.aiValue;
                                }
                            }
                        }
                    });
                }else if(fieldEqualData[analysisCode][m].path){
                    // ctable列数据比较
                    var path = "";
                    var $ctable = "";
                    if(fieldEqualData[analysisCode][m].path.indexOf("|") > -1){
                        var provincePathArry = fieldEqualData[analysisCode][m].path.split("|");
                        for (var k in provincePathArry) {
                            if($body.find("thead td[path="+provincePathArry[k]+"]").length > 0){
                                path = provincePathArry[k];
                                break;
                            }
                        }
                    }else{
                        path = fieldEqualData[analysisCode][m].path;
                    }
                    $ctable = $body.find("thead td[path='"+path+"']").parent().parent().parent("table");

                    // 合同转业务-合同资料交底：前向合同签约扫描件文件（收入合同）
                    // 项目交接：后向合同扫描件（支出合同或有收有支）
                    var eleId = $id.attr("name");
                    if(eleId == "oldContractDocument"){
                        // 前向合同签约扫描件文件
                        $ctable.find("tbody tr").each(function(o,p){
                            // 前向合同签约扫描件文件
                            var contractIncExpType = $(p).find("td[path='contractIncExpType']").text();//收支合同类型
                            if (contractIncExpType == "收入类") {
                                $(p).find("td[path]").each(function (x, y) {
                                    if ($(y).attr("path") == path) {
                                        dictV = $(y).text();
                                    }
                                });
                            }
                        })

                    }else if(eleId == "newContractFile"){
                        // 后向合同扫描件
                        var $tr = "";
                        $ctable.find("tbody tr").each(function(o,p){
                            var contractIncExpType = $(p).find("td[path='contractIncExpType']").text();//收支合同类型
                            if (contractIncExpType == "支出类") {
                                $tr = $(p);
                            }
                            if(!$tr && (contractIncExpType=="有收有支类" || contractIncExpType=="有收有支")){
                                $tr = $(p);
                            }
                        });
                        if($tr){
                            $tr.find("td[path]").each(function (x, y) {
                                if ($(y).attr("path") == path) {
                                    dictV = $(y).text();
                                }
                            });
                        }
                    }

                }else{
                    $body.find("td.label").each(function(x,y){
                        var label = getEleLabel($(y));//获取字段中文名
                        if(label == fieldEqualData[analysisCode][m].provinceField){
                            dictV = getEleValue($(y));//获取字段值
                            $(y).next("td").children().eq(0).attr("aiMark",data.dictField);//设置字段标识

                            // 将AI解析值回显到系统中
                            if(fieldEqualData[analysisCode][m].isFeedback && !dictV){
                                setEleValue($(y).next("td").children().eq(0),data.aiValue);
                                dictV = data.aiValue;
                            }
                        }
                    });
                }
            }
        }
    }
    if(!dictV) dictV = "未提及";
    return dictV;
}
}
export default aiUtils